/*******************************************************************************
 * Copyright (c) 2012-2017 Codenvy, S.A.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *   Codenvy, S.A. - initial API and implementation
 *******************************************************************************/
package org.eclipse.che.maven.data;

import java.io.Serializable;
import java.util.Objects;

/**
 * Data class for maven artifact id, contains group id, artifact id and version.
 *
 * @author Evgen Vidolob
 */
public class MavenKey implements Serializable {
    private static final long serialVersionUID = 1L;
    private final String groupId;
    private final String artifactId;
    private final String version;

    public MavenKey(String groupId, String artifactId, String version) {
        this.groupId = groupId;
        this.artifactId = artifactId;
        this.version = version;

    }

    public String getGroupId() {
        return groupId;
    }

    public String getArtifactId() {
        return artifactId;
    }

    public String getVersion() {
        return version;
    }

    @Override
    public int hashCode() {
        return Objects.hash(groupId, artifactId, version);
    }

    public boolean equals(String groupId, String artifactId) {
        if (this.groupId != null && !this.groupId.equals(groupId)) {
            return false;
        }

        if (this.artifactId != null && !this.artifactId.equals(artifactId)) {
            return false;
        }

        return true;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        MavenKey mavenKey = (MavenKey)o;
        return Objects.equals(groupId, mavenKey.groupId) &&
               Objects.equals(artifactId, mavenKey.artifactId) &&
               Objects.equals(version, mavenKey.version);
    }

    @Override
    public String toString() {
        return "MavenKey{" +
               "groupId='" + groupId + '\'' +
               ", artifactId='" + artifactId + '\'' +
               ", version='" + version + '\'' +
               '}';
    }
}
